package observer.advanced;

import java.util.ArrayList;
import java.util.List;

/**
 * 若干Event类的载体，同时提供一个执行所有Event的方法
 * @author Chen Guang
 * @date 2019/4/10 0010 上午 10:53
 */
public class EventHandler {
    /**
     * 是用一个List
      */
    private List<Event> objects;

    public EventHandler(){
        objects = new ArrayList<>();
    }

    /**
     * 添加某个对象要执行的事件，及需要的参数
      */
    public void addEvent(Object object,String methodName,Object...args){
        objects.add(new Event(object,methodName,args));
    }

    /**
     * 通知所有的对象执行指定的事件
     */
    public void notifyAllEvenr() throws Exception{
        for (Event object : objects) {
            object.invoke();
        }
    }
}
